solving polynomials